package com.ruoyi.project.per.app.type.service;

import com.ruoyi.common.constant.TypeConstants;
import com.ruoyi.common.exception.cms.CMSTypeNotDeleteException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.security.ShiroUtils;
import com.ruoyi.project.cms.content.domain.Content;
import com.ruoyi.project.cms.type.domain.CmsType;
import com.ruoyi.project.per.app.type.domain.AppType;
import com.ruoyi.project.per.app.type.mapper.AppTypeMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author 小新
 * @date 2020-09-19 11:38
 * @desc
 */
@Service
public class AppTypeServiceImpl implements IAppTypeService {
    @Autowired
    private AppTypeMapper appTypeMapper;
    @Override
    public List<AppType> selectAppTypeList(AppType appType) {
        return appTypeMapper.selectAppTypeList(appType);

    }

    @Override
    public String checkTypeNameUnique(AppType appType) {
        if(appType.getTypeId() != null && appType.getTypeId() != 0) {
            AppType cmsTypeResult = appTypeMapper.selectAppTypeById(appType.getTypeId());
            if (cmsTypeResult.getTypeName().equals(appType.getTypeName())) {
                return TypeConstants.TYPE_NAME_UNIQUE;
        }
    }

        Long typeId = StringUtils.isNull(appType.getTypeId()) ? -1L : appType.getTypeId();
        AppType info = appTypeMapper.checkTypeNameUnique(appType.getTypeName());

        if (StringUtils.isNotNull(info) && info.getTypeId().intValue() != typeId.intValue())
        {
            return TypeConstants.TYPE_NAME_NOT_UNIQUE;
        }
        return TypeConstants.TYPE_NAME_UNIQUE;
    }

    @Override
    public int insertAppType(AppType appType) {
        appType.setCreateBy(ShiroUtils.getLoginName());
        return appTypeMapper.insertAppType(appType);
    }

    @Override
    public AppType selectAppTypeById(long id) {

        return appTypeMapper.selectAppTypeById(id);
    }

    @Override
    public int deleteAppTypeByIds(Integer[] ids) {
//        boolean flag = true;
//        for (Integer id : ids) {
//            List<Content> contents = contentMapper.selectContentByTypeId(id);
//            if (contents != null && contents.size()>0){
//                flag = false;
//                break;
//            }
//        }
//        if (!flag){
//            throw new CMSTypeNotDeleteException("公告类型还有公告内容，不可以删除！");
//        }
//        return cmsTypeMapper.deleteCMSTypeByIds(ids);
           return 0;
    }

    @Override
    public int editAppType(AppType appType) {
        appType.setUpdateBy(ShiroUtils.getLoginName());
        return appTypeMapper.editAppType(appType);
    }
}
